package com.lzx.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lzx.common.utils.R;
import com.lzx.user.entity.User;
import com.lzx.user.entity.vo.OssVO;
import com.lzx.user.entity.vo.SearchParams;
import com.lzx.user.entity.vo.UserVO;
import com.lzx.user.entity.vo.UserinfoVO;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author lzx
 * @since 2022-10-03
 */
public interface UserService extends IService<User> {
    //登录
    R login(User user, HttpServletRequest request);

    //判断手机号是否已经注册
    R mobileIsRegister(String mobile);

    //注册
    R register(User user);

    //更新用户头像
    R updateAvatar(OssVO ossVO);

    //根据token获取个人信息
    R getUserInfo(HttpServletRequest request);

    //用户点赞问题，用户积分+1
    R likeProblem(Integer userId);

    //根据id获取用户信息
    R getUserinfoById(Long id);

    //用户回答问题，回答数+1
    R userReplyAdd(Long userId);

    //根据用户回答数查询前十个用户
    R rankBeforeTen();

    //获取所有用户
    R getList();

    //用户修改信息
    R updateUserinfo(UserinfoVO userinfoVO);

    //用户关注其他人，关注数+1，被关注的人粉丝数+1；取消关注其他人，关注数-1，被关注的人粉丝数-1
    R attentionAndCancelAttention(Long userId, Integer isAttention, Long attentionUserId);

    //获取所有用户
    R getUserList(int current, int size);

    //新增用户
    R addUser(User user);

    //修改用户信息
    R updateUser(UserVO userVO);

    //禁用用户
    R deleteUser(List<Long> ids);

    //解禁用户
    R relieveUser(Long id);

    //根据id获取用户信息
    R getUser(Long id);

    //搜索
    R searchUser(SearchParams searchParams);

    //导出
    void exportUser(HttpServletResponse response);

    //获取所有用户昵称
    R getUserNickname();

    //获取回答数前十的用户(不包括当前登录用户)
    List<User> getUserByReplyCount(int userId);

    //获取所有用户id
    List<Long> getUserIdList();

    //获取用户浏览记录
    R getUserBrowseList(Long userId);
}
